/**
 * 
 */
package com.curso.session6;

/**
 * @author Kapoc
 *
 */





public class Animal {


	private String nombre;
	private float peso;
	private String habita;
	private Tamano tamano;
	private Color color;
	
	
	public Animal(){
		
	}
	
	public Animal(String nombre) {
		super();
		this.nombre = nombre;
	}

	public Animal(String nombre, float peso, String habita, Tamano tamano,
			Color color) {
		super();
		this.nombre = nombre;
		this.peso = peso;
		this.habita = habita;
		this.tamano = tamano;
		this.color = color;
	}
	
	
	/**
	 * @return the nombre
	 */
	public String getNombre() {
		return nombre;
	}
	/**
	 * @param nombre the nombre to set
	 */
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	/**
	 * @return the peso
	 */
	public float getPeso() {
		return peso;
	}
	/**
	 * @param peso the peso to set
	 */
	public void setPeso(float peso) {
		this.peso = peso;
	}
	/**
	 * @return the habita
	 */
	public String getHabita() {
		return habita;
	}
	/**
	 * @param habita the habita to set
	 */
	public void setHabita(String habita) {
		this.habita = habita;
	}
	/**
	 * @return the tamano
	 */
	public Tamano getTamano() {
		return tamano;
	}
	/**
	 * @param tamano the tamano to set
	 */
	public void setTamano(Tamano tamano) {
		this.tamano = tamano;
	}
	/**
	 * @return the color
	 */
	public Color getColor() {
		return color;
	}
	/**
	 * @param color the color to set
	 */
	public void setColor(Color color) {
		this.color = color;
	}

	
	public String metodoPublico(){
		
		return "Soy publico";
	}
	
	protected String metodoProtected(){
		
		return "Soy Protected";
	}

	private String metodoPrivate(){
	
	return "Soy Private";
	}
	
	String metodoDefault(){
		
		return "Soy Default";
	}
	
	
	
	/* (non-Javadoc)
	 * @see java.lang.Object#hashCode()
	 */
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((color == null) ? 0 : color.hashCode());
		result = prime * result + ((habita == null) ? 0 : habita.hashCode());
		result = prime * result + ((nombre == null) ? 0 : nombre.hashCode());
		result = prime * result + Float.floatToIntBits(peso);
		result = prime * result + ((tamano == null) ? 0 : tamano.hashCode());
		return result;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#equals(java.lang.Object)
	 */
	@Override
	
	// se hace sobreescritura de metodos  dandole funcionalidad propia 
	// a equals para que se  compare el contenido delobjeto y no la referencia.
	// ni los objetos en memoria
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Animal other = (Animal) obj;
		if (color != other.color)
			return false;
		if (habita == null) {
			if (other.habita != null)
				return false;
		} else if (!habita.equals(other.habita))
			return false;
		if (nombre == null) {
			if (other.nombre != null)
				return false;
		} else if (!nombre.equals(other.nombre))
			return false;
		if (Float.floatToIntBits(peso) != Float.floatToIntBits(other.peso))
			return false;
		if (tamano != other.tamano)
			return false;
		return true;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return "Animal [" + (nombre != null ? "nombre=" + nombre + ", " : "")
				+ "peso=" + peso + ", "
				+ (habita != null ? "habita=" + habita + ", " : "")
				+ (tamano != null ? "tamano=" + tamano + ", " : "")
				+ (color != null ? "color=" + color : "") + "]";
	}
	
	
	

}
